Laravel.validate = {
    /**
     * Verificação de NIRE
     * 
     * @param {mixed} elementOrValue
     * @returns {Boolean}
     */
    "nire": function(elementOrValue) {
        var value = Core.validate._getValue(elementOrValue);

        if (value !== '') {

            var isNIRE = function(str) {
                if (!str) {
                    return true;
                }
                var soma = 0;
                var dv = 0;
                
                str = str.replace(/[ |-]/g,'');

                soma = parseInt(str.substring(9, 10)) * 2
                        + parseInt(str.substring(8, 9)) * 3
                        + parseInt(str.substring(7, 8)) * 4
                        + parseInt(str.substring(6, 7)) * 5
                        + parseInt(str.substring(5, 6)) * 6
                        + parseInt(str.substring(4, 5)) * 7
                        + parseInt(str.substring(3, 4)) * 8
                        + parseInt(str.substring(2, 3)) * 9
                        + parseInt(str.substring(1, 2)) * 10
                        + parseInt(str.substring(0, 1)) * 2;

                if ((11 - soma % 11) > 9) {
                    dv = (11 - soma % 11) - 10;
                } else {
                    dv = 11 - soma % 11;
                }

                if (dv != str.substring(10, 11)) {
                    return false;
                }

                return true;
            };

            if (!isNIRE(elementOrValue.val())) {
                if (Core.validate._isObjQuery(elementOrValue)) {
                    Core.form.setValidateTootip(elementOrValue, 'NIRE inválido');
                }
                return false;
            }
        }
        return true;
    }
};